import { Component, Vue } from 'vue-property-decorator';
import {
    forEach,
    isEmpty,
    isFunction,
    isObject,
    isString,
    get,
    forIn,
    eq
} from "lodash";
@Component({
})
export class mixinCondition extends Vue {
    // 根据按钮条件判断当前数据是否满足需求
    checkCondition({ condition }: any, data: any) {
        // 默认满足
        let is = true;
        if (!isEmpty(condition)) {
            // 遍历条件集合
            forEach(condition, (item) => {
                if (isString(item)) {
                    // 如果是字符串，直接根据对应字段的值判断
                    is = get(data, item);
                } else if (isFunction(item)) {
                    is = item(data);
                } else if (isObject(item)) {
                    // 如果是{key:value}类型
                    // 循环遍历对比处理（强校验）
                    forIn(item, (value: any, key: any) => {
                        is = eq(get(data, key), value);
                        // 失败则跳出循环
                        if (!is) {
                            return false;
                        }
                    });
                }
                // 失败则跳出循环
                if (!is) {
                    return false;
                }
            });
        }
        // 返回校验结果
        return is;
    }
}
